Emberveil sourcegame/2006Scape Server/src/main/java/org/apollo/cache/map/MapIndex.java
package org.apollo.cache.map;
import org.apollo.cache.def.ItemDefinition;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
/**
* A definition for a map.
*/
public final class MapIndex {
/**
* Indicates whether or not this map is members-only.
*/
private final boolean members;
/**
* The object file id.
*/
private final int objects;
/**
* The packed coordinates.
*/
private final int packedCoordinates;
/**
* The terrain file id.
*/
private final int terrain;
/**
* A mapping of region ids to {@link MapIndex}es.
*/
private static Map<Integer, MapIndex> indices;
/**
* Initialises the class with the specified set of indices.
*/
public static void init(Map<Integer, MapIndex> indices) {
MapIndex.indices = Collections.unmodifiableMap(indices);
}
/**
* Gets the {@code Map} of {@link MapIndex} instances.
*
* @return The map of {@link MapIndex} instances.
*/
public static Map<Integer, MapIndex> getIndices() {
return indices;
}
/**
* Creates the {@link MapIndex}.
*
* @param packedCoordinates The packed coordinates.
* @param terrain The terrain file id.
* @param objects The object file id.
* @param members Indicates whether or not this map is members-only.
*/
public MapIndex(int packedCoordinates, int terrain, int objects, boolean members) {
this.packedCoordinates = packedCoordinates;
this.terrain = terrain;
this.objects = objects;
this.members = members;
}
/**
* Gets the id of the file containing the object data.
*
* @return The file id.
*/
public int getObjectFile() {
return objects;
}
/**
* Gets the packed coordinates.
*
* @return The packed coordinates.
*/
public int getPackedCoordinates() {
return packedCoordinates;
}
/**
* Gets the id of the file containing the terrain data.
*
* @return The file id.
*/
public int getMapFile() {
return terrain;
}
/**
* Gets the X coordinate of this map.
*
* @return The X coordinate of this map.
*/
public int getX() {
return (packedCoordinates >> 8 & 0xFF) * MapConstants.MAP_WIDTH;
}
/**
* Gets the Y coordinate of this map.
*
* @return The y coordinate of this map.
*/
public int getY() {
return (packedCoordinates & 0xFF) * MapConstants.MAP_WIDTH;
}
/**
* Returns whether or not this MapIndex is for a members-only area of the world.
*
* @return {@code true} if this MapIndex is for a members-only area, {@code false} if not.
*/
public boolean isMembersOnly() {
return members;
}
}